﻿using huqiang.Core.HGUI;
using huqiang.Data;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;

namespace huqiang.Core.UIData
{
//    public class HSpriteLoader
//    {
//#if UNITY_EDITOR
//        static string ImageFolder;

//#endif
//        public virtual bool HandleUrl(HImage image, string texture, string sprite)
//        {
//#if UNITY_EDITOR
//            if (ImageFolder == null)
//            {
//                INIReader reader = new INIReader();
//                reader.LoadFromFile(Environment.CurrentDirectory + "/ProjectSettings/Config.ini");
//                var sps = reader.FindOrCreateSection("SpritePackerSetting");
//                ImageFolder = sps.GetValue("WorkPath");
//                if (ImageFolder == null)
//                    ImageFolder = "Assets/AssetsBundle/atlas";
//            }
//            if (texture.StartsWith("spr:"))
//            {
//                int e = texture.LastIndexOf('/');
//                sprite = texture.Substring(e + 1);
//                texture = texture.Substring(4, e - 4);
//            }
//            string filepath = ImageFolder + "/" + texture + ".png";

//            if (File.Exists(filepath))
//            {
//                if (sprite == null)
//                {
//                    image.MainTexture = UnityEditor.AssetDatabase.LoadAssetAtPath<Texture>(filepath);
//                    return true;
//                }
//                else
//                {
//                    var ss = UnityEditor.AssetDatabase.LoadAllAssetsAtPath(filepath);
//                    if (ss != null)
//                    {
//                        for (int i = 0; i < ss.Length; i++)
//                            if (ss[i].name == sprite)
//                            {
//                                image.Sprite = ss[i] as Sprite;
//                                return true;
//                            }
//                    }
//                    return true;
//                }
//            }
//            else
//            {
//                if (sprite == null)
//                {
//                    image.MainTexture = UnityEngine.Resources.Load<Texture>(texture);
//                    return image.MainTexture;
//                }
//                else
//                {
//                    var ss = UnityEngine.Resources.LoadAll<Sprite>(texture);
//                    if (ss != null)
//                    {
//                        for (int i = 0; i < ss.Length; i++)
//                            if (ss[i].name == sprite)
//                            {
//                                image.Sprite = ss[i];
//                                return true;
//                            }
//                    }
//                    return false;
//                }
//            }
//#else
//            if (texture.IndexOf("spr:") == 0)
//            {
//                int e = texture.LastIndexOf('/');
//                sprite = texture.Substring(e + 1);
//                texture = texture.Substring(4, e - 4);
//            }
//            if (sprite == null)
//            {
//                image.MainTexture = UnityEngine.Resources.Load<Texture>(texture);
//                return image.MainTexture;
//            }
//            else
//            {
//                var ss = UnityEngine.Resources.LoadAll<Sprite>(texture);
//                if (ss != null)
//                {
//                    for (int i = 0; i < ss.Length; i++)
//                        if (ss[i].name == sprite)
//                        {
//                            image.Sprite = ss[i];
//                            return true;
//                        }
//                }
//                return false;
//            }
//#endif
//        }
//        public static string DataBaseFolder = "Arts/UI";

//        public static void LoadSprite(string url, Action<HSprite> callback)
//        {
//            for (int i = 0; i < HSprites.Count; i++)
//            {
//                var hs = HSprites[i];
//                if (hs.Url == url)
//                {
//                    if (callback != null)
//                        callback(hs);
//                    return;
//                }
//            }
//            if (url.StartsWith("ab:"))
//            {
//                LoadFromAB(url.Substring(3));
//            }
//            else if(url.StartsWith("http"))
//            {

//            }
//            else if(url.StartsWith("file:"))
//            {
//                string fp = url.Substring(5);
//                if(File.Exists(fp))
//                {
//                    var dat = File.ReadAllBytes(fp);
//                    Texture2D t2d = new Texture2D(2, 2, TextureFormat.RGBA32, false);
//                    t2d.LoadImage(dat);
//                }
//            }
//        }
//        static List<HTexture> Textures = new List<HTexture>();
//        static List<HSprite> HSprites = new List<HSprite>();
//        static HSprite LoadFromMem(string url)
//        {
//            for (int i = 0; i < Textures.Count; i++)
//            {
//                var ht = Textures[i];
//                if(ht.Sprite!=null)
//                {
//                    if (ht.Sprite.Url == url)
//                        return ht.Sprite;
//                }
//                else
//                {
//                    for (int j = 0; j < ht.hsprites.Count; j++)
//                        if (ht.hsprites[j].Url == url)
//                            return ht.hsprites[j];
//                }
//            }
//            return null;
//        }
//        static HSprite LoadFromEditor(string filepath, string spr)
//        {
//            if (ImageFolder == null)
//            {
//                INIReader reader = new INIReader();
//                reader.LoadFromFile(Environment.CurrentDirectory + "/ProjectSettings/Config.ini");
//                var sps = reader.FindOrCreateSection("SpritePackerSetting");
//                ImageFolder = sps.GetValue("WorkPath");
//                if (ImageFolder == null)
//                    ImageFolder = "Assets/AssetsBundle/atlas";
//            }
//            if (File.Exists(filepath))
//            {
//                if(spr==null|spr=="")
//                {
//                    var t2d = UnityEditor.AssetDatabase.LoadAssetAtPath<Texture2D>(filepath);
//                    HTexture ht = new HTexture(t2d);
//                    Textures.Add(ht);
//                    return ht.Sprite;
//                }
//                else
//                {
//                    var t2d = UnityEditor.AssetDatabase.LoadAssetAtPath<Texture2D>(filepath);
//                    var ss = UnityEditor.AssetDatabase.LoadAllAssetsAtPath(filepath);
//                    if (ss != null)
//                    {
//                        Sprite[] tmp = new Sprite[ss.Length];
//                        for (int i = 0; i < ss.Length; i++)
//                        {
//                            if (ss[i].name == spr)
//                            {
//                                tmp[i] = ss[i] as Sprite;
//                            }
//                        }
//                        HTexture ht = new HTexture(t2d,tmp);
//                        Textures.Add(ht);
//                        return ht.FindSprite(spr);
//                    }
//                }
//            }
//            return null;
//        }
//        public static string UIABFolder;
//        static List<AssetBundleCreateRequest> assetBundlesMissions;
//        static HTexture LoadFromAB(string filepath)
//        {
//            for (int i = 0; i < assetBundlesMissions.Count; i++)
//            {
//                if(assetBundlesMissions[i].assetBundle.name==filepath)
//                {

//                }
//            }
//            var abcr = AssetBundle.LoadFromFileAsync(filepath);
//            //abcr.completed += 
//            return null;
//        }
//        static void LoadFromRes()
//        {

//        }
//    }
}
